package me.boot.auth.jap.service;

import com.fujieid.jap.core.JapUser;
import me.zhyd.oauth.model.AuthUser;
import org.springframework.stereotype.Service;

/**
 * 适用于 jap-social 模块，实现 getByPlatformAndUid 和 createAndGetSocialUser 方法，
 * 如果需要sso登录，则必须实现 getById 方法
 */
@Service("social")
public class JapSocialUserServiceImpl extends BaseJapUserServiceImpl {

    /**
     * 创建并获取第三方用户，相当于第三方登录成功后，将授权关系保存到数据库（开发者业务系统中 social user -> sys user 的绑定关系）
     *
     * @param userInfo JustAuth 中的 AuthUser
     * @return JapUser
     */
    @Override
    public JapUser createAndGetSocialUser(Object userInfo) {
        AuthUser authUser = (AuthUser) userInfo;
        // 查询绑定关系，确定当前用户是否已经登录过业务系统
        JapUser japUser = this.getByPlatformAndUid(authUser.getSource(), authUser.getUuid());
        if (null == japUser) {
            japUser = userService.createUser(authUser);
            japUser.setAdditional(authUser);
        }
        return japUser;
    }
}
